# 变量: 计算机语言中存储计算结果或者读取数据的位置(符号)
# 变量和数据
# 变量和数据是分开存储的
# 比如:快递柜的 13号单元格 存放着一步 手机
# 变量: 13号单元格
# 数据: 手机
# 数据存放在内存中的一个位置
# 13号单元格 在快递柜的 第一行第三列
# 位置(地址): 第一行第三列
# 变量的本质是保存着数据在内存中的地址(引用)
# 变量: 13号单元格 ---> 可能会变化
# 位置: 第一行第三列 ---> 不会变
# 引用: 变量名指向数据在内存的地址叫引用
# 通过 id(变量名) 查看数据在内存中的地址(结果为一串数字)
# 给变量赋值本质上是修改了数据的引用 【参数和返回值也是变量】
# 案例演示
# 定义变量：不可变数据类型
num = 100
# 查看变量的引用（数据在内存的中地址）
print(id(num))  # 1396671927760
# 重新赋值（不可变类型需要重新开辟空间）
num = 200
print(id(num))  # 1396671931024
# 结论:给变量赋值本质修改的是数据的引用
# 即:重新赋值后内存地址是不一样的
# 定义变量：可变类型
list1 = [1, 2, 3]
print(id(list1))  # 1396677525696
# 查看数据/变量的引用
list1.append(4)
print(id(list1))  # 1396677525696
